from lxml import etree
import requests
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import urllib
import urllib.request
import time
def save_img(img_url,file_name,file_path):
    #保存图片到磁盘文件夹 file_path中，默认为当前脚本运行目录下的 book\img文件夹
    try:
        if not os.path.exists(file_path):
            print('文件夹',file_path,'不存在，重新建立')
            #os.mkdir(file_path)
            os.makedirs(file_path)
        #获得图片后缀
        file_suffix = os.path.splitext(img_url)[1]
        #拼接图片名（包含路径）
        filename = '{}{}{}{}'.format(file_path,os.sep,file_name,file_suffix)
       #下载图片，并保存到文件夹中
        urllib.request.urlretrieve(img_url,filename=filename)
    except IOError as e:
        print('文件操作失败',e)
    except Exception as e:
        print('错误 ：',e)
#获取网页的源码
base_url = "http://www.gufengmh8.com"
url = "http://www.gufengmh8.com/rank/"
html = requests.get(url).content

#设置节点并获取漫画名和链接
root = etree.HTML(html)
href_data = root.xpath("//li[@class='item-sm']/a/@href")
title_data = root.xpath("//li[@class='item-sm']/a/@title")

#为每一个漫画生成文件夹
for i,title in enumerate(title_data):
    if not os.path.exists('./draw/' + title):
        os.makedirs("./draw/"+title)
    #获取漫画链接源码
    m_url = href_data[i]
    m_html = requests.get(m_url).content
    m_root = etree.HTML(m_html)
    m_href_data = m_root.xpath("//ul[@id='chapter-list-1']/li/a/@href")
    m_title_data = m_root.xpath("//ul[@id='chapter-list-1']/li/a/span/text()")
    for j,m_title in enumerate(m_title_data):
        if not os.path.exists('./draw/' + title + '/' + m_title):
            os.makedirs("./draw/" + title + '/' + m_title)
        #获取章节链接
        z_url = base_url + m_href_data[j]
        browser = webdriver.Chrome()
        #打开网页
        browser.get(z_url)
        page = browser.find_element_by_xpath("//div[@id='images']/p[@class='img_info']").text.split('/')[1].split(')')[0]
        img = []
        img.append(browser.find_element_by_xpath("//div[@id='images']/img").get_attribute('src'))
        save_img(img[0], 0, "./draw/" + title + '/' + m_title)
        for n in range(int(page)-1):
            time.sleep(1)
            browser.find_element_by_xpath("//a[@href='javascript:SinTheme.nextPage();']").click()
            wait = WebDriverWait(browser, 3)  # 创建一个等待10秒的对象
            wait.until(EC.presence_of_element_located((By.ID, 'images')))  # 等待直到某个标签加载出来
            img_url = browser.find_element_by_xpath("//div[@id='images']/img").get_attribute('src')
            img.append(img_url)
            save_img(img_url, n+1, "./draw/" + title + '/' + m_title)
        #将图片存入文件夹
        print(img)
        browser.close()